home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’91 / AliasThis! / AliasThisƒ / src / SamplePrint.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-10-03  |  4.1 KB  |  160 lines  |  [TEXT/MPS ]

  1. #include "SampleErrors.h"
  2. #include "SampleFileIO.h"
  3. #include "SampleMain.h"
  4. #include "SamplePrint.h"
  5.  
  6. #include <Memory.h>
  7. #include <Errors.h>
  8.  
  9.  
  10. #pragma segment Main
  11. /************************************************************************************
  12.  
  13.     CenterDrawArea
  14.  
  15. *************************************************************************************/
  16. Point CenterDrawArea(Rect *sRect,Rect *bRect)
  17. {
  18.     Point    p;
  19.  
  20.     p.h = ( (bRect->right - bRect->left) - (sRect->right - sRect->left) ) / 2;
  21.     p.v = ( (bRect->bottom - bRect->top) - (sRect->bottom - sRect->top) ) / 2;
  22.  
  23.     return p;
  24. }
  25.  
  26.  
  27. #pragma segment Main
  28. /************************************************************************************
  29.  
  30.     PresentStyleDialog
  31.  
  32. *************************************************************************************/
  33. void PresentStyleDialog()
  34. {
  35.     OSErr    err;
  36.     Boolean    justCreated = false;
  37.  
  38.     if ( gPrRecHdl == nil ) { /* the style dialog hasn't been presented */
  39.         gPrRecHdl = (THPrint)NewHandle(sizeof(TPrint));
  40.         justCreated = true;
  41.     }
  42.  
  43.     if ( gPrRecHdl ) {
  44.         PrOpen();
  45.         if ( !(err = PrError()) ) {
  46.  
  47.             if (justCreated)
  48.                 PrintDefault(gPrRecHdl);
  49.             else
  50.                 (void) PrValidate(gPrRecHdl); /* discard result saying whether record changed */
  51.  
  52.             if ( !(err = PrError()) )
  53.                 PrStlDialog(gPrRecHdl);
  54.         }
  55.         PrClose();
  56.     }
  57. }
  58.  
  59.  
  60. #pragma segment Main
  61. /************************************************************************************
  62.  
  63.     PrintFile
  64.  
  65. *************************************************************************************/
  66. OSErr PrintFile(FSSpecPtr fileSpec)
  67. {
  68.     WindowPtr    window;
  69.     OSErr        err;
  70.  
  71.     err = OpenFile(fileSpec);
  72.     if (!err && (window = FrontWindow())) {
  73.         err = StartPrintingProcess(false, &(window->portRect));
  74.         DoCloseWindow(window);
  75.     }
  76.     return(err);
  77. }
  78.  
  79.  
  80. #pragma segment Main
  81. /************************************************************************************
  82.  
  83.     StartPrintingProcess
  84.  
  85. *************************************************************************************/
  86. OSErr StartPrintingProcess(Boolean getUserInput, Rect *MyDrawingRect)
  87. {
  88.     OSErr        err;
  89.     short        numberOfPages;
  90.     TPPrPort    printPort;
  91.     Point        newOrigin;
  92.     GrafPtr        oldPort;
  93.     short        i;
  94.     TPrStatus    Status;
  95.     Boolean        printit;
  96.     Boolean        justCreated = false;
  97.  
  98.     GetPort(&oldPort);
  99.  
  100.     if ( gPrRecHdl == nil ) { /* the style dialog hasn't been presented */
  101.         gPrRecHdl = (THPrint)NewHandle(sizeof(TPrint));
  102.         justCreated = true;
  103.     }
  104.     if ( !gPrRecHdl )
  105.         err = memFullErr;
  106.     else {
  107.         PrOpen();
  108.         if ( !(err = PrError()) ) {
  109.             if (justCreated)
  110.                 PrintDefault(gPrRecHdl);
  111.             else
  112.                 (void) PrValidate(gPrRecHdl); /* discard result saying whether record changed */
  113.  
  114.             if ( !(err = PrError()) ) {
  115.                 printit = (getUserInput ? PrJobDialog(gPrRecHdl) : true);
  116.                 if ( printit ) {
  117.                     numberOfPages = (**gPrRecHdl).prJob.iCopies;
  118.                     printPort = PrOpenDoc(gPrRecHdl,nil,nil);
  119.                     err = PrError();
  120.                     for (i = 1; (i <= numberOfPages) && !err; ++i) {
  121.                         PrOpenPage(printPort,nil);
  122.  
  123.                         if ( !(err = PrError()) ) {
  124.                             newOrigin = CenterDrawArea(MyDrawingRect,&((**gPrRecHdl).prInfo.rPage));
  125.                             OffsetRect(&gStopRect,newOrigin.h,newOrigin.v);
  126.                             OffsetRect(&gGoRect,newOrigin.h,newOrigin.v);
  127.                             SetPort((GrafPtr) printPort);
  128.                             DrawWindow(FrontWindow());
  129.                             OffsetRect(MyDrawingRect,newOrigin.h,newOrigin.v);
  130.                             FrameRoundRect(MyDrawingRect,16,16);
  131.                             OffsetRect(&gStopRect,-newOrigin.h,-newOrigin.v);
  132.                             OffsetRect(&gGoRect,-newOrigin.h,-newOrigin.v);
  133.                             OffsetRect(MyDrawingRect,-newOrigin.h,-newOrigin.v);
  134.                             MoveTo(4,20);
  135.                             TextFont(0);
  136.                             GetWTitle(FrontWindow(), &gTitle);
  137.                             DrawString(gTitle);
  138.  
  139.                         }    /* if ( !(err = PrError()) ) */
  140.  
  141.                         PrClosePage(printPort);
  142.  
  143.                     }        /* for ( i = 1; i <= numberOfPages; i++) */
  144.  
  145.                     PrCloseDoc(printPort);
  146.                     if (!err && (**gPrRecHdl).prJob.bJDocLoop == bSpoolLoop &&
  147.                       (!( err = PrError() )) ) {
  148.                         PrPicFile(gPrRecHdl,nil,nil,nil,&Status);
  149.                         err = PrError();
  150.                     }
  151.  
  152.                 }            /* if ( printit ) */
  153.             }                /* if ( !(err = PrError()) ) */
  154.         }                    /* if ( !(err = PrError()) ) */
  155.         PrClose();
  156.         SetPort(oldPort);
  157.     }                        /* if ( gPrRecHdl ) */
  158.     return (err);
  159. } /* end of function */
  160.